package com.pimee.service.admin;

import java.util.List;
import java.util.Map;

import com.github.pagehelper.PageInfo;
import com.pimee.model.SysUser;
import com.pimee.model.SysUserRole;
import com.pimee.model.vo.SysUserVo;
import com.pimee.service.IBaseService;

public interface ISysUserService extends IBaseService<SysUser> {

	SysUser selectOneByAccount(String account);

	/**
	 * 更新用户信息
	 * 
	 * @param sysUser
	 */
	void updateUser(SysUser sysUser);

	/**
	 * 校验用户是否超级管理员
	 * 
	 * @param userId
	 * @return
	 */
	boolean isAdmin(Long userId);

	/**
	 * 用户分页列表
	 * 
	 * @param params
	 * @return
	 */
	public PageInfo<SysUserVo> pageUser(Map<String, Object> params);

	/**
	 * 校验登录账号是否存在
	 * 
	 * @param loginName
	 * @return
	 */
	String checkLoginNameUnique(String loginName);

	/**
	 * 校验手机号码是否唯一
	 *
	 * @param user
	 *            用户信息
	 * @return 结果
	 */
	public String checkPhoneUnique(String phoneNum);

	/**
	 * 根据用户信息
	 * 
	 * @param userId
	 * @return
	 */
	SysUserVo selectUserById(Long userId);

	/**
	 * 添加用户
	 * 
	 * @param sysUser
	 */
	void addUser(SysUser sysUser);

	/**
	 * 更新用户状态
	 * 
	 * @param sysUser
	 */
	void changeStatus(SysUser sysUser);

	/**
	 * 更新用户角色
	 * 
	 * @param userId
	 * @param roleIds
	 */
	void updateUserRole(Long userId, Long[] roleIds);

	/**
	 * 获取用户关联的角色
	 * 
	 * @param userId
	 * @return
	 */
	List<SysUserRole> listRealRole(Long userId);

	/**
	 * 重置密码
	 * 
	 * @param sysUser
	 */
	void resetUserPwd(SysUser sysUser);

	/**
	 * 校验密码
	 * 
	 * @param user
	 * @param password
	 * @return
	 */
	boolean checkPassword(SysUser user, String password);

	/**
	 * 查询用户所属角色组
	 * 
	 * @param userId
	 * @return
	 */
	String selectUserRoleGroup(Long userId);

	/**
	 * 查询用户所属岗位组
	 * 
	 * @param userId
	 * @return
	 */
	String selectUserPostGroup(Long userId);

}
